package org.dolphin.service;

import java.util.List;
import java.util.Set;
import org.dolphin.base.bean.UserVO;
import org.dolphin.entity.security.Group;
import org.dolphin.entity.security.Url;
import org.dolphin.entity.security.User;
import org.hibernate.criterion.Order;
import org.springframework.security.core.userdetails.UserDetailsService;

public interface SecurityControlService extends UserDetailsService {
  public void changePassword(String currentPassword, String newPassword, String confirmedNewPassword);

  public void createGroup(Group group);

  public void createUser(User user);

  public User fetchUser(Long id);

  public List<Group> getAssignedGroups(String username);

  public List<Url> getSecurityMetadata();

  public List<UserVO> getUsers(int page, int rows, List<Order> orders);

  public Long getUsersCount();

  public List<Group> loadGroups(Set<String> groupName);

  public User loadUser(String username);

  public void updateUser(User user);
}
